package com.sg.dto.biz.app.common;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;

/**
 * @desc AchievementInfoDto
 * @使用场景
 */
@Data
public class AchievementInfoDto extends BaseDto implements Serializable {

    /**
     * 成果ID
     */
    @NotNull(message = "成果ID不能为空")
    @ApiModelProperty("成果ID")
    private String achievementId;

    /**
     * 成果类型ID
     */
    @ApiModelProperty("成果类型ID")
    private String achievementTypeId;

    /**
     * 成果类别ID
     */
    @ApiModelProperty("成果类别ID")
    private String achievementCategoryId;

    /**
     * 成果等级ID
     */
    @ApiModelProperty("成果等级ID")
    private String achievementGradeId;
    /**
     * 成果类型编号
     */
    @ApiModelProperty("成果类型编号")
    private String achievementTypeNumber;

    /**
     * 成果类型名称
     */
    @ApiModelProperty("成果类型名称")
    private String achievementTypeName;

    /**
     * 版权归属别名
     */
    @ApiModelProperty("版权归属别名")
    private String belongName;

    /**
     * 成果类别编号
     */
    @ApiModelProperty("成果类别编号")
    private String achievementCategoryNumber;

    /**
     * 成果类别名称
     */
    @ApiModelProperty("成果类别名称")
    private String achievementCategoryName;

    /**
     * 成果等级编号
     */
    @ApiModelProperty("成果等级编号")
    private String achievementGradeNumber;

    /**
     * 成果等级名称
     */
    @ApiModelProperty("成果等级名称")
    private String achievementGradeName;
    /**
     * 成果业务等级ID
     */
    @ApiModelProperty("成果业务等级ID")
    private String achievementBusinessGradeId;
    /**
     * 成果业务等级编号
     */
    @ApiModelProperty("成果业务等级编号")
    private String achievementBusinessGradeNumber;

    /**
     * 成果业务等级名称
     */
    @ApiModelProperty("成果业务等级名称")
    private String achievementBusinessGradeName;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        AchievementInfoDto that = (AchievementInfoDto) o;
        return achievementId == that.achievementId && achievementTypeId == that.achievementTypeId && achievementCategoryId == that.achievementCategoryId && achievementGradeId == that.achievementGradeId && achievementTypeNumber == that.achievementTypeNumber && achievementTypeName == that.achievementTypeName && belongName == that.belongName && achievementCategoryNumber == that.achievementCategoryNumber && achievementCategoryName == that.achievementCategoryName && achievementGradeNumber == that.achievementGradeNumber && achievementGradeName == that.achievementGradeName && achievementBusinessGradeId == that.achievementBusinessGradeId && achievementBusinessGradeNumber == that.achievementBusinessGradeNumber && achievementBusinessGradeName == that.achievementBusinessGradeName;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), achievementId, achievementTypeId, achievementCategoryId, achievementGradeId, achievementTypeNumber, achievementTypeName, belongName, achievementCategoryNumber, achievementCategoryName, achievementGradeNumber, achievementGradeName, achievementBusinessGradeId, achievementBusinessGradeNumber, achievementBusinessGradeName);
    }

}
